package site.jlopen.secret.model.data;

import java.util.List;

import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import site.jlopen.secret.common.SecretBaseForm;
import site.jlopen.secret.uitl.SecretTableType;

/**
* @ClassName: SecretDataCreateReq
* @Description: 节点数据集请求体
* @author ChenJiaLu
* @date 2024年10月17日 下午4:25:58
*
 */
@Data
@EqualsAndHashCode(callSuper=false)
public class SecretDataCreateReq extends SecretBaseForm {
	/**
	 * 绑定的节点编号（节点ID）
	 */
    @NotBlank(message = "节点编号不能为空")
	private String nodeCode;
	/**
	 * 所属数据源编码
	 */
    @NotBlank(message = "数据源编码不能为空")
	private String datasourceCode;
	/**
	 * 数据标题（自定义）
	 */
    @NotBlank(message = "标题不能为空")
	private String title;
	/**
	 * 文件名称（该命名需要实际的文件名称，也就是说在数据源上该文件的实际命名，并且需要带上后缀（如果有后缀））
	 */
    @NotBlank(message = "文件名称不能为空")
	private String fileName;
	/**
	 * 文件地址（这里需要传入在数据源上该文件的实际全地址，不要包含文件名）
	 */
    @NotBlank(message = "文件地址不能为空")
	private String fileDir;
	/**
	 * 备注（自定义）
	 */
	private String remark;
	/**
	 * 数据表结构
	 */
    @NotBlank(message = "数据表结构不能为空")
	private List<SecretDataTableStructure> structures;

	
	public SecretDataCreateReq(String nodeCode, String datasourceCode, String title, String fileName, String fileDir,
			String remark, List<SecretDataTableStructure> structures) {
		super();
		this.nodeCode = nodeCode;
		this.datasourceCode = datasourceCode;
		this.title = title;
		this.fileName = fileName;
		this.fileDir = fileDir;
		this.remark = remark;
		this.structures = structures;
	}
	
	public static SecretDataTableStructure newStructure(String columnName, SecretTableType columnType, String columnRemark) {
		return new SecretDataTableStructure(columnName, columnType, columnRemark);
	}
	
	public static SecretDataTableStructure newStructure(String columnName, SecretTableType columnType) {
		return new SecretDataTableStructure(columnName, columnType);
	}

	public SecretDataCreateReq() {
		super();
	}
 
}
